package com.haixiaoke.saas.repository.service;

import com.haixiaoke.saas.repository.pojo.MetroLine;
import com.haixiaoke.saas.repository.util.Tree.Node;

import java.util.List;

/**
 * 地铁省市-根据id关联地铁号线Service接口
 * 
 * @author haixiaoke
 * @date 2023-04-06
 */
public interface IMetroLineService {
    /**
     * 查询地铁省市-根据id关联地铁号线
     * 
     * @param metroId 地铁省市-根据id关联地铁号线主键
     * @return 地铁省市-根据id关联地铁号线
     */
    public MetroLine selectMetroByMetroId(Long metroId);

    /**
     * 查询地铁省市-根据id关联地铁号线列表
     * 
     * @param metro 地铁省市-根据id关联地铁号线
     * @return 地铁省市-根据id关联地铁号线集合
     */
    List<MetroLine> selectMetroList(MetroLine metro);

    /**
     * 新增地铁省市-根据id关联地铁号线
     * 
     * @param metro 地铁省市-根据id关联地铁号线
     * @return 结果
     */
    public int insertMetro(MetroLine metro);

    /**
     * 修改地铁省市-根据id关联地铁号线
     * 
     * @param metro 地铁省市-根据id关联地铁号线
     * @return 结果
     */
    int updateMetro(MetroLine metro);

    /**
     * 批量删除地铁省市-根据id关联地铁号线
     * 
     * @param metroIds 需要删除的地铁省市-根据id关联地铁号线主键集合
     * @return 结果
     */
    int deleteMetroByMetroIds(Long[] metroIds);

    /**
     * 删除地铁省市-根据id关联地铁号线信息
     * 
     * @param metroId 地铁省市-根据id关联地铁号线主键
     * @return 结果
     */
    int deleteMetroByMetroId(Long metroId);

    /**
     * 校验线路是否已存在
     * @param metroName     地铁名称
     * @param provinceId    省id
     * @param cityId        市id
     * @return
     */
    boolean checkMetroAndCity(String metroName, Long provinceId, Long cityId);

    List<Node> selectLinesByCityId(Long cityId);
}
